import request from '@/config/axios'

// 非聚集预警记录表（1条记录对应1个人的1次预警） VO
export interface WarningIndividualVO {
  id: number // 主键
  personId: number // 人员ID（关联person.id）
  personName: string // 人员姓名（关联person.id）
  idNumber: string // 证件号码
  warningConditionId: number // 预警条件ID
  warnType: number // 预警类型
  warningTime: Date // 预警时间
  warningContent: string // 预警内容
  fenceType: number //围栏类型：1-禁入，2-禁出
  lng: number //高德经度
  lat: number //高德纬度
  isRead: number // 阅读标记

  gatherId: number;
  gatherName: string // 聚集条件名称
  startTime: Date // 聚集开始时间
  endTime: Date // 聚集结束时间
  gatherAddress: string // 聚集地址
  createTime: Date | number | string
}

// 非聚集预警记录表（1条记录对应1个人的1次预警） API
export const WarningIndividualApi = {
  // 查询非聚集预警记录表（1条记录对应1个人的1次预警）分页
  getWarningIndividualPage: async (params: any) => {
    return await request.get({url: `/member/warning-individual/page`, params})
  },

  // 查询非聚集预警记录表（1条记录对应1个人的1次预警）详情
  getWarningIndividual: async (id: number) => {
    return await request.get({url: `/member/warning-individual/get?id=` + id})
  },

  // 新增非聚集预警记录表（1条记录对应1个人的1次预警）
  createWarningIndividual: async (data: WarningIndividualVO) => {
    return await request.post({url: `/member/warning-individual/create`, data})
  },

  // 修改非聚集预警记录表（1条记录对应1个人的1次预警）
  updateWarningIndividual: async (data: WarningIndividualVO) => {
    return await request.put({url: `/member/warning-individual/update`, data})
  },

  // 删除非聚集预警记录表（1条记录对应1个人的1次预警）
  deleteWarningIndividual: async (id: number) => {
    return await request.delete({url: `/member/warning-individual/delete?id=` + id})
  },

  // 导出非聚集预警记录表（1条记录对应1个人的1次预警） Excel
  exportWarningIndividual: async (params) => {
    return await request.download({url: `/member/warning-individual/export-excel`, params})
  },

  /**
   * 单条标记已读
   * @param id 聚集人员记录ID
   */
  markSingleRead: async (id: number) => {
    return await request.put<boolean>({
      url: `/member/warning-individual/mark-single-read`,
      params: {id} // 用params传参（或根据后端要求改为data）
    });
  },

  /**
   * 单条发送钉钉消息
   * @param params 包含id等参数的对象
   */
  sendMessage: async (params: any) => {
    return await request.put<boolean>({
      url: `/member/warning-individual/send-message`,
      params: params
    });
  },

  /**
   * 批量标记已读
   * @param ids 聚集人员记录ID列表
   */
  markBatchRead: async (ids: number[]) => {
    return await request.put<boolean>({
      url: `/member/warning-individual/mark-batch-read`,
      data: ids // 直接传递数组，而非包含ids属性的对象
    });
  }
}
